#include <iostream>

using namespace std;

const int N = 1e6 + 10;

int n;
int a[N];
int f[N];

int main()
{
	cin >> n;
	for(int i = 1; i <= n; i++) cin >> a[i];

	//dp[i]表示i位置，最长子序列的长度
	int ret = 1;
	for(int i = 1; i <= n; i++)
	{
		f[i] = 1; // 长度为1的子序列
		for(int j = 1; j < i; j++)
		{
			if(a[i] > a[j]) // 能挂在以a[j]为结尾的最长子序列后面
			{
				f[i] = max(f[j] + 1, f[i]);
			}
		}
		ret = max(ret, f[i]);
	}

	cout << ret << endl;

	return 0;
}

